package tech.aistar.service.impl;

import tech.aistar.dao.IUserDao;
import tech.aistar.dao.IUserDao2;
import tech.aistar.dao.IVideoDao2;
import tech.aistar.dao.impl.UserDaoImpl;
import tech.aistar.dao.impl.UserDaoTwoImpl;
import tech.aistar.dao.impl.VideoDaoImpl2;
import tech.aistar.model.dto.UserDTO;
import tech.aistar.model.pojo.User;
import tech.aistar.model.pojo.Video;
import tech.aistar.service.IUserService;

import java.util.ArrayList;
import java.util.List;

/**
 * 本类用来演示: 业务逻辑层调用dao层
 *
 * 最难写的一层就是业务逻辑层.
 *
 * @author: success
 * @date: 2022/8/12 10:41 上午
 */
public class UserServiceImpl implements IUserService {
    //定义dao层
    private IUserDao2 userDao = new UserDaoTwoImpl();

    private IVideoDao2 videoDao = new VideoDaoImpl2();

    @Override
    public List<UserDTO> findAll() {
        //1. 查找所有的用户
        List<User> userList = userDao.getAll();

        List<UserDTO> userDTOList = new ArrayList<>();

        //2. 遍历这个集合
        userList.forEach(u->{

            UserDTO userDTO=new UserDTO();

            //每个用户和这个用户发布的视频对应起来了,如果没有发布,则返回null
            List<Video> videoList = videoDao.findByUserId(u.getId());


            userDTO.setUser(u);
            userDTO.setVideos(videoList);

            userDTOList.add(userDTO);

        });

        return userDTOList;
    }
}
